XTA-Service - Anzeigen und Löschen reservierter URLs
Die Durchführung dieser Beschreibung muss durch das IT-Personal mit entsprechenden Kenntnissen erfolgen.
Der neue XTA-Service erlaubt die Kommunikation mit mehreren Postfächern. Wenn Sie von der alten Version auf die neue umsteigen, müssen Sie deshalb alte, reservierte URLs freigeben. Für den neuen XTA-Service werden diese in der Optionsverwaltung unter PROSOZ Bau > eGovernment > XOEV-Einstellungen > URL des XTA-Service eingerichtet.
Wenn Sie nun den XTA-Service auf eine bereits reservierte URL einrichten müssen, können Sie diese URL wie im folgenden Beispiel beschrieben anzeigen lassen und wieder freigeben.
Nutzen Sie hierzu die PowerShell von Microsoft.
Hierzu rufen Sie die Powershell unter Microsoft auf, z.B. ise.
Kopieren Sie den Code weiter unten in die PowerShell.
Führen Sie das Skript aus.
Es erscheint eine übersichtliche Tabelle mit den notwendigen Informationen.
Angezeigt werden alle Reservierungen.
Die Liste ist sortiert nach dem Port, kann aber per Klick auf die gewünschte Spalte umsortiert werden.
In unserem Beispiel soll der Eintrag http://old.server.local:4242/Xta-Service/ gelöscht werden.
Dazu die entsprechende Zeile markieren und mit Ok bestätigen.
Es erscheint die Sicherheitsabfrage.
Bei Bestätigung mit Ok, wird die Reservierung entfernt.
Kopieren Sie diesen Code in die Powershell.
<#
.SYNOPSIS
Display reserved URLs entries and delete selected entries.
.DESCRIPTION
Executes "netsh http show urlacl" to query discretionary access control
lists (DACLs) for all reserved URLs and displays the entries
in a Grid View. If you select an entry from this list, it will be deleted
.NOTES
Copyright © Prosoz Herten GmbH 2025
#>
# Set Encoding to UTF-8 to decode german Umlauts from netsh.exe
&'netsh.exe' -? | Out-Null
[System.Console]::OutputEncoding = [System.Text.UTF8Encoding]::UTF8
$urlAclTable = [System.Data.DataTable]::new()
$urlAclTable.Columns.AddRange( @(
[System.Data.DataColumn]::new('URL', [string]),
[System.Data.DataColumn]::new('Scheme', [string]),
[System.Data.DataColumn]::new('Host', [string]),
[System.Data.DataColumn]::new('Port', [int]),
[System.Data.DataColumn]::new('Path', [string]),
[System.Data.DataColumn]::new('User', [string]),
[System.Data.DataColumn]::new('Listen', [string]),
[System.Data.DataColumn]::new('Delegate', [string]),
[System.Data.DataColumn]::new('SDDL', [string])))
$urlAclTable.DefaultView.Sort = 'Port ASC'
$showUrlAclOutput = &'netsh.exe' http show urlacl | Select-Object -Skip 4
# Parse the output line by line
foreach($line in $showUrlAclOutput | Where-Object{-not [string]::IsNullOrWhiteSpace($_)})
{
$splitIndex = $line.IndexOf(": ");
$key = $line.Substring(0, $splitIndex).Trim();
$value = $line.Substring($splitIndex + 2).Trim()
switch ($key)
{
{$_ -in ('Reserved Url', 'Reservierte URL')}
{
# Must escape * and + because the uri class does not support this chars
$uriEscaped = [uri]::new($value.Replace('*','①').Replace('+','②'))
$row = $urlAclTable.Rows.Add()
$row.URL = $value
$row.Scheme = $uriEscaped.Scheme
$row.Host = $uriEscaped.Host.Replace('①', '*').Replace('②', '+')
$row.Port = $uriEscaped.Port
$row.Path = $uriEscaped.AbsolutePath
}
{$_ -in ('User', 'Benutzer')}
{
if ([string]::IsNullOrEmpty($row.User))
{
$row.User = $value
}
else
{
$row.User += ", $value"
}
}
{$_ -in ('Listen', 'Abhören')}
{
$row.Listen = $value -eq "Yes"
}
{$_ -in ('Delegate', 'Delegieren')}
{
$row.Delegate = $value -eq "Yes"
}
'SDDL'
{
$row.SDDL = $value
}
default
{
Write-Warning "Unkown Output Value '$key'"
}
}
}
$selection = $urlAclTable.DefaultView | Out-GridView -Title 'Select URL ACL Entry to Delete' -PassThru
if ($selection -is [System.Data.DataRowView])
{
$deleteCmd = "netsh.exe http delete urlacl url='{0}'" -f $selection.URL
if( $Host.UI.PromptForChoice('Delete URL ACL Entry',
"Are you sure you want to execute '$deleteCmd' ?", @('&Yes', '&No'), 1) -eq 0)
{
Invoke-Expression $deleteCmd
}
}
War der Artikel hilfreich?
|
|
Verwandte Themen

